package demo.easyExcel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.ListUtils;
import com.example.demo.DemoApplication;
import com.example.demo.easyexcel.dao.DemoDataListener;
import com.example.demo.easyexcel.db.entity.DemoData;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class testEasyExcel {

    String PATH = "I:\\java\\";

    /**
     * 不创建对象的写---head()可变标题
     */
    @Test
    public void noModelWrite() {
        // 写法1
        String fileName = PATH + "不创建对象的写.xlsx";
        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName).head(head()).sheet("模板").doWrite(dataList());
    }

    /**
     * 动态头，实时生成头写入
     * <p>
     * 思路是这样子的，先创建List<String>头格式的sheet仅仅写入头,然后通过table 不写入头的方式 去写入数据
     *
     * <p>
     * 1. 创建excel对应的实体对象 参照{@link DemoData}
     * <p>
     * 2. 然后写入table即可
     */
    private List<List<String>> head() {
        List<List<String>> list = ListUtils.newArrayList();
        List<String> head0 = ListUtils.newArrayList();
        head0.add("字符串");
        List<String> head1 = ListUtils.newArrayList();
        head1.add("数字");
		List<String> head2 = ListUtils.newArrayList();
		head2.add("日期" + System.currentTimeMillis());
        list.add(head0);
        list.add(head1);
		list.add(head2);
        return list;
    }

    private List<List<Object>> dataList() {
        List<List<Object>> list = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            List<Object> data = ListUtils.newArrayList();
            data.add("字符串" + i);
			data.add(new Date());
            data.add(0.56);
            list.add(data);
        }
        return list;
    }
}
